<?php
namespace app\controller;

use app\BaseController;
use EasyWeChat\Factory;
use think\facade\Db;

class Wechat extends BaseController
{
    public function index()
    {
        //测试账号
        //wx077a4f4fd20b3b1a
        //ec20bc0899fce14a7fa8d03d6c53af2b

        //woogan
        //wxee13db8ed32b1a00
        //2493a1aff82ea9b705156fb4a3aa3001
        //woogan
        //3sdqmX0mmibm4eGMj9rz5wdy9rKcEWvVz3Gw7KVFKFa

        $options = [
            'app_id'    => 'wx221303a51a4cc67a',
            'secret'    => 'ebd26f4e3b117c98164fa9f23cc03780',
            'token'     => 'erhu2018',
            'aes_key'   => 'S9FEqJRNV74lWEUblH1znwqrQESHnHveT7dpYfOCylC',
            'log' => [
                'level' => 'debug',
                'file'  => '/tmp/easywechat.log',
            ],
            // ...
        ];
        
        $app = Factory::officialAccount($options);
        
        $server = $app->server;
        $user = $app->user;
        
        $server->push(function($message) use ($user) {
            $fromUser = $user->get($message['FromUserName']);
        
            return "{$fromUser->nickname} 您好！欢迎关注 !";
        });
        
        $app->server->push(function ($message) {

            switch ($message['MsgType']) {
                case 'event':
                    if($message['EventKey']=='V1001_check_zw'){
                        return '您好：敬请直接回复家宽报装时的五级ID，葫葫会将负责该五级ID的装维联系方式，发给您。如需要查看发送举例，敬请发送：五级    两个字给葫葫。葫葫会发送查询的演示给您。';
                    }
                    // return '收到事件消息';
                    break;
                case 'text':
                    $msg = $this->name($message['Content']);
                    return $msg;
                    break;
                // case 'image':
                //     return '收到图片消息';
                //     break;
                // case 'voice':
                //     return '收到语音消息';
                //     break;
                // case 'video':
                //     return '收到视频消息';
                //     break;
                // case 'location':
                //     return '收到坐标消息';
                //     break;
                // case 'link':
                //     return '收到链接消息';
                //     break;
                // case 'file':
                //     return '收到文件消息';
                default:
                    return '已收到您的留言！';
                    break;
            }

        });


        $server->serve()->send();
    }

    public function name($msg)
    {
        //查询数据库
        $msg = $this->strFilter($msg);
        // return $msg;
        $list = Db::name('auto_reply')->where('msg', $msg)->findOrEmpty();

        if($list == null){
            return '已收到您的留言！';
        }else{
            return ($list['answer']);
        }
        
    }

    //String helper，过滤特字符
    public function strFilter($str){
        $str = str_replace('`', '', $str);
        $str = str_replace('·', '', $str);
        $str = str_replace('~', '', $str);
        $str = str_replace('!', '', $str);
        $str = str_replace('！', '', $str);
        $str = str_replace('@', '', $str);
        $str = str_replace('#', '', $str);
        $str = str_replace('$', '', $str);
        $str = str_replace('￥', '', $str);
        $str = str_replace('%', '', $str);
        $str = str_replace('^', '', $str);
        $str = str_replace('……', '', $str);
        $str = str_replace('&', '', $str);
        $str = str_replace('*', '', $str);
        $str = str_replace('(', '', $str);
        $str = str_replace(')', '', $str);
        $str = str_replace('（', '', $str);
        $str = str_replace('）', '', $str);
        $str = str_replace('-', '', $str);
        $str = str_replace('_', '', $str);
        $str = str_replace('——', '', $str);
        $str = str_replace('+', '', $str);
        $str = str_replace('=', '', $str);
        $str = str_replace('|', '', $str);
        $str = str_replace('\\', '', $str);
        $str = str_replace('[', '', $str);
        $str = str_replace(']', '', $str);
        $str = str_replace('【', '', $str);
        $str = str_replace('】', '', $str);
        $str = str_replace('{', '', $str);
        $str = str_replace('}', '', $str);
        $str = str_replace(';', '', $str);
        $str = str_replace('；', '', $str);
        $str = str_replace(':', '', $str);
        $str = str_replace('：', '', $str);
        $str = str_replace('\'', '', $str);
        $str = str_replace('"', '', $str);
        $str = str_replace('“', '', $str);
        $str = str_replace('”', '', $str);
        $str = str_replace(',', '', $str);
        $str = str_replace('，', '', $str);
        $str = str_replace('<', '', $str);
        $str = str_replace('>', '', $str);
        $str = str_replace('《', '', $str);
        $str = str_replace('》', '', $str);
        $str = str_replace('.', '', $str);
        $str = str_replace('。', '', $str);
        $str = str_replace('/', '', $str);
        $str = str_replace('、', '', $str);
        $str = str_replace('?', '', $str);
        $str = str_replace('？', '', $str);
        $str = str_replace(' ', '', $str);
        $str = str_replace("\r", '', $str);
        $str = str_replace("\n", '', $str);
        $str = str_replace("\r\n", '', $str);

        return trim($str);
    }
}
